A heterogeneous application is an application that may execute on a heterogeneous computing platform. A heterogeneous computing platform refers to a data processing system that includes more than one type of processor. Typically, each different type of processor uses a different instruction set. An application written in Open Computing Language (OpenCL) is one example of a heterogeneous application. Different portions of the heterogeneous application may be designated to execute on different processors of the heterogeneous computing platform.
In some cases, one or more portions of the heterogeneous application may be designated for hardware acceleration. Hardware acceleration refers to implementing the functionality of a portion of program code in hardware or circuitry. A hardware accelerator is a circuit implementation of computer readable program instructions (e.g., program code). A hardware accelerator is functionally equivalent to the program code being hardware accelerated. Thus, rather than execute program code on a processor to perform a given task, the task may be performed by the hardware accelerator. In many cases, the hardware accelerator is able to perform tasks faster and using less power than a processor performing the same tasks by executing program code.
Often, a developer may wish to verify functionality and determine performance of hardware accelerated program code without having to undertake a lengthy and complex hardware implementation process involving synthesis, placement, and routing. In other cases, the developer may not have access to the hardware accelerator device being used for hardware acceleration, but still need to verify functionality and performance.